import axios from 'axios';
import { showFailToast } from 'vant';


// 创建 axios 实例
const Service = axios.create({
    baseURL: 'http://localhost:8090/',
    timeout: 10000
});

// 请求拦截器
// Service.interceptors.request.use((config) => {
//     // 设置请求头
//     const token = window.localStorage.getItem('token');
//     if (token) {
//         config.headers = config.headers || {};
//         config.headers['Authorization'] = token;
//     } else {
//         const loginPath = routerURL.LOGIN;
//         window.location.href = loginPath;
//     }
//     // 根据请求的数据类型设置不同的请求头
//     if (config.data) {
//         if (config.data instanceof FormData) {
//             // 如果是 FormData 类型，则设置请求头为 multipart/form-data
//             config.headers['Content-Type'] = 'multipart/form-data';
//         } else {
//             // 否则，默认设置为 application/json
//             config.headers['Content-Type'] = 'application/json; charset=utf-8';
//             // 将非 FormData 类型的数据转换为 JSON 字符串
//             config.data = JSON.stringify(config.data);
//         }
//     }
//     return config;
// }, (error) => {
//     return Promise.reject(error);
// });

Service.interceptors.request.use((config) => {
    // 获取当前路由名称


    // 如果当前路由不是登录或注册页面，则检查token

    const token = window.localStorage.getItem('token');
    if (token) {
        config.headers = config.headers || {};
        config.headers['Authorization'] = token;
    }



    // 根据请求的数据类型设置不同的请求头
    if (config.data) {
        if (config.data instanceof FormData) {
            // 如果是 FormData 类型，则不进行额外处理
            config.headers['Content-Type'] = 'multipart/form-data';
        } else {
            // 否则，默认设置为 application/json，不进行 JSON 转换
            config.headers['Content-Type'] = 'application/json; charset=utf-8';
        }
    }
    return config;
}, (error) => {
    return Promise.reject(error);
});


// 响应拦截器
Service.interceptors.response.use((response) => {
    // 获取接口返回结果
    const res = response.data;
    if (res && res.status === 200) {
        return res;
    } else {
        // 使用 Toast 组件展示错误信息
        showFailToast(res && res.msg ? res.msg : '请求出错，请稍后重试');
        return Promise.reject(res);
    }
}, (error) => {
    // 处理请求错误
    showFailToast('请求出错，请稍后重试');
    return Promise.reject(error);
});

export default Service;
